<?php

namespace App\Services;

use Mpdf\Mpdf;

class DownloadService
{

    // 下载协议
    public static function downloadAgreement(array $params)
    {

        // 下载远程文件到本地目录
        foreach ($remote as $localFile) {
            $res = downloadFile($localFile);
            // dump($res);
        }
        // die;
        // 获取目录中的所有图片和 PDF 文件路径
        // dd(storage_path('app\files'));
        // $directory = storage_path('app\files');
        // $files = scandir(storage_path('app\files'));

        $directory = storage_path('app\public' . '/' . date('Y-m-d') . '/');
        $files = scandir(storage_path('app\public' . '/' . date('Y-m-d') . '/'));

        foreach ($files as $file) {
            if ($file != '.' && $file != '..') {
                $filePath = $directory . '/' . $file;
                $filePaths[] = $filePath;
            }
        }
        // dd($filePaths);
        // 创建一个新的 mPDF 实例
        $mpdf = new Mpdf();

        // 遍历文件路径，将每个文件添加到 PDF 中
        foreach ($filePaths as $filePath) {
            $fileExtension = pathinfo($filePath, PATHINFO_EXTENSION);

            // 如果文件是图片，则将其添加为一个新的 PDF 页面并填充整个页面
            if (in_array($fileExtension, ['jpg', 'jpeg', 'png', 'gif'])) {
                $mpdf->AddPage();
                // dd($mpdf->showImageErrors = true);
                $mpdf->showImageErrors = true;
                $images = file_get_contents($filePath);
                // dd($filePath);
                // dd($images);
                // 调整图片尺寸以填充整个页面
                $image = imagecreatefromstring(file_get_contents($filePath));
                // dd($image);
                $width = imagesx($image);
                $height = imagesy($image);

                $pageWidth = $mpdf->w - ($mpdf->lMargin + $mpdf->rMargin);
                $pageHeight = $mpdf->h - ($mpdf->tMargin + $mpdf->bMargin);

                $imageRatio = $width / $height;
                $pageRatio = $pageWidth / $pageHeight;

                if ($imageRatio > $pageRatio) {
                    $newWidth = $pageWidth;
                    $newHeight = $pageWidth / $imageRatio;
                } else {
                    $newWidth = $pageHeight * $imageRatio;
                    $newHeight = $pageHeight;
                }

                // 计算图片在页面上的位置
                $x = ($pageWidth - $newWidth) / 2 + $mpdf->lMargin;
                $y = ($pageHeight - $newHeight) / 2 + $mpdf->tMargin;

                // 将调整后的图片添加到 PDF 页面中
                $mpdf->Image($filePath, $x, $y, $newWidth, $newHeight);
            }
        }

        // 遍历文件路径，将每个 PDF 文件合并到当前 PDF 中
        foreach ($filePaths as $filePath) {
            $fileExtension = pathinfo($filePath, PATHINFO_EXTENSION);

            // 如果文件是 PDF，则将其合并到当前 PDF 中
            if ($fileExtension == 'pdf') {
                $mpdf->SetSourceFile($filePath);
                for ($i = 1; $i <= $mpdf->SetSourceFile($filePath); $i++) {
                    $tplIdx = $mpdf->ImportPage($i);
                    $mpdf->AddPage();
                    $mpdf->UseTemplate($tplIdx);
                }
            }
        }

        // 将 PDF 写入输出文件
        $mpdf->Output($outputFile, 'D');

        // 删除原始的图片和 PDF 文件
        foreach ($filePaths as $filePath) {
            unlink($filePath);
        }
    }
}
